/**
 * 
 */
package com.shine.icis.blo;

import java.util.List;

import com.shine.cotrun.sql.QueryParameters;
import com.shine.cotrun.web.comm.ListPage;
import com.shine.icis.dto.DataCheck;
import com.shine.icis.hbean.DataCheckDef;
import com.shine.icis.hbean.DataCheckR08;
import com.shine.icis.hbean.DataCheckR09;
import com.shine.icis.hbean.DataCheckR10;
import com.shine.icis.hbean.DataCheckR11;
import com.shine.icis.hbean.DataCheckR12;
import com.shine.icis.hbean.R12ChkItem;
import com.shine.icis.hbean.DataCheckR13;
import com.shine.icis.hbean.R13ChkFactAmt;
import com.shine.icis.hbean.SettleAmtDetail;

/**
 * @author zsy
 *
 */
public interface IDataCheckService {

	/**
	 * 查找所有启用的核对定义
	 * @return
	 */
	public List<DataCheckDef> getDataCheckDefs(char enableFlag);
	
	/**
	 * 翻页查找R08核对点
	 * @param qp
	 * @return
	 */
	public ListPage<DataCheckR08> getDataCheckR08Page(QueryParameters qp);
	
	/**
	 * 资金账户完整性核对
	 * @author zhangxr 2010-10-27
	 * @param qp
	 * */	
	public ListPage<DataCheckR09> getDataCheckR09Page(QueryParameters qp);
	
	/**
	 * 账户一致性核对
	 * @author zhangxr 2010-10-27
	 * @param qp
	 * */		
	public ListPage<DataCheckR10> getDataCheckR10Page(QueryParameters qp);

	/**
	 * 客户资金结算勾稽核对
	 * @author zhangxr 2010-10-27
	 * @param qp
	 * */	
	public ListPage<DataCheckR11> getDataCheckR11Page(QueryParameters qp);
	
	/**
	 * A13平衡核对
	 * @author zhangxr 2010-10-27
	 * @param qp
	 * */	
	public ListPage<DataCheckR12> getDataCheckR12Page(QueryParameters qp);
	
	/**
	 * A13平衡核对
	 * @author zuohp 2012-07-22
	 * @param qp
	 * */	
	public ListPage<DataCheckR13> getDataCheckR13Page(QueryParameters qp);
	
	/**
	 * A13平衡核对
	 * @return
	 */
	public DataCheckR12 getDataCheckR12();
	
	/**
	 * A13平衡核对
	 * @return
	 */
	public DataCheckR13 getDataCheckR13(int queryDate);
	/**
	 * 两类资金划转实际划转金额
	 * @return
	 */
	public R13ChkFactAmt getR13ChkFactAmt(int queryDate);
	/**
	 * 修改两类资金划转实际划转金额
	 * @return
	 */
	public R13ChkFactAmt modifyR13ChkFactAmt(int queryDate, double shFactAmt, double szFactAmt );
	/**
	 * 修改备注信息
	 * @param id
	 * @param note
	 */
	public DataCheckR12 modifyDataCheckR12Note(int id, Integer relateid, double accSumAmt, double bankAmt, 
			double reservesAmt, double bailA13Amt, double bailSdcAmt, double arapAmt, double settleAmt, 
			double fullComm, double bankInterest, double sdcCommAmt, double secInterest, double bankComm, 
			double sqtClearAmt, double sqtStamptax, double discAmt, String note);
	
	/**
	 * 修改备注信息
	 * @param id
	 * @param note
	 */
	public DataCheckR13 modifyDataCheckR13Note(int id, Integer relateid, String chkType, double discAmt,
			double reservesFactAmt, double fullComm,double accumAdjustAmt, double sdcCommAmt,double bankComm,
			double bankInterest,double reservesInterest,double secInterest,double withheldTaxAmt, double settleAdjustAmt, 
			double clearOffsetBal, double stamptaxOffsetBal, double redBlueFillAmt, double other1Amt, double other2Amt, 
			double other3Amt, double other4Amt, String note);
	
	
	/**
	 * 查找所有A13平衡核对的项查项
	 * @return
	 */
	public List<R12ChkItem> getManuChkItems();
	
	/**
	 * 导出EXCEL
	 * @param qp
	 * @return 在临时目录是的相对路径
	 */
	public String csExpDataCheckR08(QueryParameters qp, String dir, String expType);
	
	/**
	 * 导出EXCEL
	 * @param qp
	 * @return 在临时目录是的相对路径
	 */
	public String csExpDataCheckR09(QueryParameters qp, String dir, String expType);
	
	/**
	 * 导出EXCEL
	 * @param qp
	 * @return 在临时目录是的相对路径
	 */
	public String csExpDataCheckR10(QueryParameters qp, String dir, String expType);
	
	/**
	 * 导出EXCEL
	 * @param qp
	 * @return 在临时目录是的相对路径
	 */
	public String csExpDataCheckR11(QueryParameters qp, String dir, String expType);
	
	/**
	 * 导出EXCEL
	 * @param qp
	 * @return 在临时目录是的相对路径
	 */
	public String csExpDataCheckR12(QueryParameters qp, String dir, String expType);
	/**
	 * 导出EXCEL
	 * @param qp
	 * @return 在临时目录是的相对路径
	 */
	public String csExpDataCheckR13(QueryParameters qp, String dir, String expType);
	/**
	 * 查询未通过的记录总数
	 * @author zhangxr 2010-10-27
	 * */
	public DataCheck getNotPassed();
	/**
	 * 查询交收信息
	 * @author zuohp 2012-07-31
	 * */
	public SettleAmtDetail getSettleAmtDetail(String dateType, int queryDate);

}
